#!/bin/bash

# 作用：根据模板自动生成新服务的基础配置,该服务使用宿主机host网络
# 使用：new-host-service.sh app
# 参数：
#   （1） 服务名称（必须）
#   （2） 模板路径（可选）
#   （3） 输出路径（可选）

service_name=$1
template_dir=$2
output_dir=$3

# 通用部分  - start

self_dir=$(dirname $(readlink -f "$0"))  # 当前脚本的绝对路径
work_dir=$(dirname $(dirname "$self_dir"))  # 工作目录，相当于：../../

# 函数：日志输出
function log(){
  log_path="$work_dir/log"
  mkdir -p "$log_path"
  # 既打印到控制台，同时也写入到日志文件
  echo -e $* | tee -a `date +"$log_path"/%Y-%m-%d.log`
}

log "工作目录：$work_dir"

# 通用部分  - end


# 参数判断  - start
if [[ $service_name = "" ]];
then
  log "未指定服务名称，退出生成"
  exit 0
fi


if [[ $template_dir = "" ]];
then
  template_dir="$work_dir/service/template"
fi

if [[ $output_dir = "" ]];
then
  output_dir="$work_dir/service/running/$service_name"
fi

log "指定服务名称：$service_name"
log "指定生成模板目录：$template_dir"
log "指定生成输出目录：$output_dir"

# 参数判断  - end


# 判断路径是否存在
if [[ -d "$output_dir" ]];
then
  log "已存在路径：$output_dir，不用重复初始化"
  exit 0
else
  log "不存在路径：$output_dir，自动新建"
  mkdir -p "$output_dir"
fi

yaml_outpath="$output_dir/docker-compose.yaml"

# 字符串替换
sed \
-e "s#WORK_DIR#$work_dir#g" \
-e "s#SERVICE_NAME#$service_name#g" \
-e "s#SERVICE_IP#$service_ip#g" \
"$template_dir/docker-compose-host.yaml" > "$yaml_outpath"

log "服务已经初始化完成，输出文件：$yaml_outpath"
